#pragma once

#ifndef _MSK1_H_
#define _MSK1_H_

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#endif // #ifndef COM_NO_WINDOWS_H
#include <unknwn.h>
#include <d2d1.h>
#include <richedit.h>
#include <Richole.h>

#ifndef MSK_USE_C_DEFINITIONS

#ifndef __cplusplus
#define MSK_USE_C_DEFINITIONS
#endif

#endif // #ifndef MSK_USE_C_DEFINITIONS

#ifndef MSK_DECLARE_INTERFACE
#define MSK_DECLARE_INTERFACE(X) interface DECLSPEC_UUID(X) DECLSPEC_NOVTABLE
#endif

// Foward Declaration
#ifndef MSK_USE_C_DEFINITIONS
interface IMSK1Framework;
interface IMSK1Application;
interface IMSK1CommandHandler;
interface IMSK1Window;
interface IMSK1StatusBarCtrl;
interface IMSK1ScrollBarCtrl;
interface IMSK1ProgressBarCtrl;
interface IMSK1ReBarCtrl;
interface IMSK1ToolBarCtrl;
interface IMSK1TrackBarCtrl;
interface IMSK1TextBoxCtrl;
interface IMSK1ListBoxCtrl;
interface IMSK1ComboBoxCtrl;
interface IMSK1RichTextBoxCtrl;
interface IMSK1TabViewCtrl;
interface IMSK1TreeViewCtrl;
interface IMSK1PropertySheetDialog;
interface IMSK1TaskDialog;
interface IMSK1DateTimePickerCtrl;
interface IMSK1HeaderCtrl;
interface IMSK1AnimationCtrl;
interface IMSK1UpDownCtrl;
interface IMSK1ButtonCtrl;
interface IMSK1MonthCalendarCtrl;
interface IMSK1ToolTipCtrl;
interface IMSK1HotKeyCtrl;
interface IMSK1ImageListCtrl;
interface IMSK1PagerCtrl;
interface IMSK1StaticCtrl;
interface IMSK1SysLinkCtrl;
interface IMSK1ToolWindow;
#else
typedef interface IMSK1Framework			IMSK1Framework;
typedef interface IMSK1Application			IMSK1Application;
typedef interface IMSK1CommandHandler		IMSK1CommandHandler;
typedef interface IMSK1Window				IMSK1Window;
typedef interface IMSK1StatusBarCtrl		IMSK1StatusBarCtrl;
typedef interface IMSK1ScrollBarCtrl		IMSK1ScrollBarCtrl;
typedef interface IMSK1ProgressBarCtrl		IMSK1ProgressBarCtrl;
typedef interface IMSK1ReBarCtrl			IMSK1ReBarCtrl;
typedef interface IMSK1ToolBarCtrl			IMSK1ToolBarCtrl;
typedef interface IMSK1TrackBarCtrl			IMSK1TrackBarCtrl;
typedef interface IMSK1TextBoxCtrl			IMSK1TextBoxCtrl;
typedef interface IMSK1ListBoxCtrl			IMSK1ListBoxCtrl;
typedef interface IMSK1ComboBoxCtrl			IMSK1ComboBoxCtrl;
typedef interface IMSK1RichTextBoxCtrl		IMSK1RichTextBoxCtrl;
typedef interface IMSK1TabViewCtrl			IMSK1TabViewCtrl;
typedef interface IMSK1TreeViewCtrl			IMSK1TreeViewCtrl;
typedef interface IMSK1PropertySheetDialog	IMSK1PropertySheetDialog;
typedef interface IMSK1TaskDialog			IMSK1TaskDialog;
typedef interface IMSK1DateTimePickerCtrl	IMSK1DateTimePickerCtrl;
typedef interface IMSK1HeaderCtrl			IMSK1HeaderCtrl;
typedef interface IMSK1AnimationCtrl		IMSK1AnimationCtrl;
typedef interface IMSK1UpDownCtrl			IMSK1UpDownCtrl;
typedef interface IMSK1ButtonCtrl			IMSK1ButtonCtrl;
typedef interface IMSK1MonthCalendarCtrl	IMSK1MonthCalendarCtrl;
typedef interface IMSK1ToolTipCtrl			IMSK1ToolTipCtrl;
typedef interface IMSK1HotKeyCtrl			IMSK1HotKeyCtrl;
typedef interface IMSK1ImageListCtrl		IMSK1ImageListCtrl;
typedef interface IMSK1PagerCtrl			IMSK1PagerCtrl;
typedef interface IMSK1StaticCtrl			IMSK1StaticCtrl;
typedef interface IMSK1SysLinkCtrl			IMSK1SysLinkCtrl;
typedef interface IMSK1ToolWindow			IMSK1ToolWindow;
#endif

typedef enum _MSK1_RESOURCE_TYPE
{
	MSK1_RESOURCE_CURSOR,
	MSK1_RESOURCE_BITMAP,
	MSK1_RESOURCE_ICON,
	MSK1_RESOURCE_MENU,
	MSK1_RESOURCE_DIALOG,
	MSK1_RESOURCE_STRING,
	MSK1_RESOURCE_FONTDIR,
	MSK1_RESOURCE_FONT,
	MSK1_RESOURCE_ACCELERATOR,
	MSK1_RESOURCE_RCDATA,
	MSK1_RESOURCE_MESSAGETABLE,
	MSK1_RESOURCE_GROUPID,
	MSK1_RESOURCE_GROUP_CURSOR,
	MSK1_RESOURCE_VERSION,
	MSK1_RESOURCE_DLGINCLUDE,
	MSK1_RESOURCE_PLUGPLAY,
	MSK1_RESOURCE_VXD,
	MSK1_RESOURCE_ANICURSOR,
	MSK1_RESOURCE_ANIICON,
	MSK1_RESOURCE_HTML,
	MSK1_RESOURCE_MANIFEST
} MSK1_RESOURCE_TYPE;

typedef enum _MSK1_STATUSBAR_STYLE
{
	MSK1_STATUSBAR_STYLE_TOOLTIP		= SBT_TOOLTIPS,
	MSK1_STATUSBAR_STYLE_SIZEGRIP		= SBARS_SIZEGRIP		
} MSK1_STATUSBAR_STYLE;

typedef enum _MSK1_ANIMATION_STYLE
{
	MSK1_ANIMATION_STYLE_AUTOPLAY		= ACS_AUTOPLAY,
	MSK1_ANIMATION_STYLE_CENTER			= ACS_CENTER,
	MSK1_ANIMATION_STYLE_TIMER			= ACS_TIMER,
	MSK1_ANIMATION_STYLE_TRANSPARENT	= ACS_TRANSPARENT
} MSK1_ANIMATION_STYLE;

typedef enum _MSK1_BUTTON_STYLE
{
	MSK1_BUTTON_STYLE_3DSTATE			= BS_3STATE,
	MSK1_BUTTON_STYLE_AUTO3DSTATE		= BS_AUTO3STATE,
	MSK1_BUTTON_STYLE_AUTOCHECKBOX		= BS_AUTOCHECKBOX,
	MSK1_BUTTON_STYLE_AUTORADIOBUTTON	= BS_AUTORADIOBUTTON,
	MSK1_BUTTON_STYLE_CHECKBOX			= BS_CHECKBOX,
	MSK1_BUTTON_STYLE_DEFPUSHBUTTON		= BS_DEFPUSHBUTTON,
	MSK1_BUTTON_STYLE_GROUPBOX			= BS_GROUPBOX,
	MSK1_BUTTON_STYLE_LEFTTEXT			= BS_LEFTTEXT,
	MSK1_BUTTON_STYLE_OWNERDRAW			= BS_OWNERDRAW,
	MSK1_BUTTON_STYLE_PUSHBUTTON		= BS_PUSHBUTTON,
	MSK1_BUTTON_STYLE_RADIOBUTTON		= BS_RADIOBUTTON,
	MSK1_BUTTON_STYLE_USERBUTTON		= BS_USERBUTTON,
	MSK1_BUTTON_STYLE_BITMAP			= BS_BITMAP,
	MSK1_BUTTON_STYLE_BOTTOM			= BS_BOTTOM,
	MSK1_BUTTON_STYLE_CENTER			= BS_CENTER,
	MSK1_BUTTON_STYLE_ICON				= BS_ICON,
	MSK1_BUTTON_STYLE_FLAT				= BS_FLAT,
	MSK1_BUTTON_STYLE_LEFT				= BS_LEFT,
	MSK1_BUTTON_STYLE_MULTILINE			= BS_MULTILINE,
	MSK1_BUTTON_STYLE_NOTIFY			= BS_NOTIFY,
	MSK1_BUTTON_STYLE_PUSHLIKE			= BS_PUSHLIKE,
	MSK1_BUTTON_STYLE_RIGHT				= BS_RIGHT,
	MSK1_BUTTON_STYLE_RIGHTBUTTON		= BS_RIGHTBUTTON,
	MSK1_BUTTON_STYLE_TEXT				= BS_TEXT,
	MSK1_BUTTON_STYLE_TOP				= BS_TOP,
	MSK1_BUTTON_STYLE_TYPEMASK			= BS_TYPEMASK,
	MSK1_BUTTON_STYLE_VCENTER			= BS_VCENTER,
	MSK1_BUTTON_STYLE_SPLITBUTTON		= BS_SPLITBUTTON,
	MSK1_BUTTON_STYLE_DEFSPLITBUTTON	= BS_DEFSPLITBUTTON,
	MSK1_BUTTON_STYLE_COMMANDLINK		= BS_COMMANDLINK,
	MSK1_BUTTON_STYLE_DEFCOMMANDLINK	= BS_DEFCOMMANDLINK
} MSK1_BUTTON_STYLE;

typedef enum _MSK1_BUTTON_STATE
{
	MSK1_BUTTON_STATE_CHECKED			= BST_CHECKED,
	MSK1_BUTTON_STATE_INDETERMINATE		= BST_INDETERMINATE,
	MSK1_BUTTON_STATE_UNCHECKED			= BST_UNCHECKED
} MSK1_BUTTON_STATE;

typedef enum _MSK1_COMBOBOX_STYLE
{
	MSK1_COMBOBOX_STYLE_AUTOHSCROLL			= CBS_AUTOHSCROLL,
	MSK1_COMBOBOX_STYLE_DISABLENOSCROLL		= CBS_DISABLENOSCROLL,
	MSK1_COMBOBOX_STYLE_DROPDOWN			= CBS_DROPDOWN,
	MSK1_COMBOBOX_STYLE_DROPDOWNLIST		= CBS_DROPDOWNLIST,
	MSK1_COMBOBOX_STYLE_HASSTRIGNS			= CBS_HASSTRINGS,
	MSK1_COMBOBOX_STYLE_LOWERCASE			= CBS_LOWERCASE,		
	MSK1_COMBOBOX_STYLE_NOINTERGRALHEIGHT	= CBS_NOINTEGRALHEIGHT,
	MSK1_COMBOBOX_STYLE_OEMCONVERT			= CBS_OEMCONVERT,
	MSK1_COMBOBOX_STYLE_OWNERDRAWFIXED		= CBS_OWNERDRAWFIXED,
	MSK1_COMBOBOX_STYLE_OWNERDRAWVARIABLE	= CBS_OWNERDRAWVARIABLE,
	MSK1_COMBOBOX_STYLE_SIMPLE				= CBS_SIMPLE,
	MSK1_COMBOBOX_STYLE_SORT				= CBS_SORT,
	MSK1_COMBOBOX_STYLE_UPPERCASE			= CBS_UPPERCASE
} MSK1_COMBOBOX_STYLE;

typedef enum _MSK1_COMBOBOX_EXSTYLE
{
	MSK1_COMBOBOX_EXSTYLE_CASESENSITIVE		= CBES_EX_CASESENSITIVE,
	MSK1_COMBOBOX_EXSTYLE_NOEDITIMAGE		= CBES_EX_NOEDITIMAGE,
	MSK1_COMBOBOX_EXSTYLE_NOEDITIMAGEINDENT = CBES_EX_NOEDITIMAGEINDENT,
	MSK1_COMBOBOX_EXSTYLE_NOSIZELIMIT		= CBES_EX_NOSIZELIMIT,
	MSK1_COMBOBOX_EXSTYLE_PATHWORDBREAKPROC	= CBES_EX_PATHWORDBREAKPROC,
	MSK1_COMBOBOX_EXSTYLE_TEXTENDELLIPSIS	= CBES_EX_TEXTENDELLIPSIS
} MSK1_COMBOBOX_EXSTYLE;

typedef enum MSK1_CBDDL_ATTR
{
	MSK1_CBDDL_ARCHIVE		= DDL_ARCHIVE,
	MSK1_CBDDL_DIRECTORY	= DDL_DIRECTORY,
	MSK1_CBDDL_DRIVES		= DDL_DRIVES,
	MSK1_CBDDL_EXCLUSIZE	= DDL_EXCLUSIVE,
	MSK1_CBDDL_HIDDEN		= DDL_HIDDEN,
	MSK1_CBDDL_READONLY		= DDL_READONLY,
	MSK1_CBDDL_READWRITE	= DDL_READWRITE,
	MSK1_CBDDL_SYSTEM		= DDL_SYSTEM
} MSK1_CBDDL_ATTR;

typedef enum _MSK1_DATETIME_STYLE
{
	MSK1_DATETIME_STYLE_APPCANPARSE				= DTS_APPCANPARSE,
	MSK1_DATETIME_STYLE_LONGDATEFORMAT			= DTS_LONGDATEFORMAT,
	MSK1_DATETIME_STYLE_RIGHTALIGN				= DTS_RIGHTALIGN,
	MSK1_DATETIME_STYLE_SHOWNONE				= DTS_SHOWNONE,
	MSK1_DATETIME_STYLE_SHORTDATEFORMAT			= DTS_SHORTDATEFORMAT,
	MSK1_DATETIME_STYLE_SHORTDATECENTURYFORMAT	= DTS_SHORTDATECENTURYFORMAT,
	MSK1_DATETIME_STYLE_TIMEFORMAT				= DTS_TIMEFORMAT,
	MSK1_DATETIME_STYLE_UPDOWN					= DTS_UPDOWN
} MSK1_DATETIME_STYLE;

typedef enum _MSK1_TEXTBOX_STYLE
{
	MSK1_TEXTBOX_STYLE_AUTOHSCROLL	= ES_AUTOHSCROLL,
	MSK1_TEXTBOX_STYLE_AUTOVSCROLL	= ES_AUTOVSCROLL,
	MSK1_TEXTBOX_STYLE_CENTER		= ES_CENTER,
	MSK1_TEXTBOX_STYLE_LEFT			= ES_LEFT,
	MSK1_TEXTBOX_STYLE_LOWERCASE	= ES_LOWERCASE,
	MSK1_TEXTBOX_STYLE_MULTILINE	= ES_MULTILINE,
	MSK1_TEXTBOX_STYLE_NOHIDESEL	= ES_NOHIDESEL,
	MSK1_TEXTBOX_STYLE_NUMBER		= ES_NUMBER,
	MSK1_TEXTBOX_STYLE_OEMCONVERT	= ES_OEMCONVERT,
	MSK1_TEXTBOX_STYLE_PASWORD		= ES_PASSWORD,
	MSK1_TEXTBOX_STYLE_READONLY		= ES_READONLY,
	MSK1_TEXTBOX_STYLE_RIGHT		= ES_RIGHT,
	MSK1_TEXTBOX_STYLE_UPPERCASE	= ES_UPPERCASE,
	MSK1_TEXTBOX_STYLE_WANTRETURN	= ES_WANTRETURN
} MSK1_TEXTBOX_STYLE;

typedef enum _MSK1_HEADER_STYLE
{
	MSK1_HEADER_STYLE_BUTTONS		= HDS_BUTTONS,
	MSK1_HEADER_STYLE_DRAGDROP		= HDS_DRAGDROP,
	MSK1_HEADER_STYLE_FILTERBAR		= HDS_FILTERBAR,
	MSK1_HEADER_STYLE_FLAT			= HDS_FLAT,
	MSK1_HEADER_STYLE_FULLDRAG		= HDS_FULLDRAG,
	MSK1_HEADER_STYLE_HIDDEN		= HDS_HIDDEN,
	MSK1_HEADER_STYLE_HORZ			= HDS_HORZ,
	MSK1_HEADER_STYLE_HOTTRACK		= HDS_HOTTRACK,
	MSK1_HEADER_STYLE_CHECKBOXES	= HDS_CHECKBOXES,
	MSK1_HEADER_STYLE_NOSIZING		= HDS_NOSIZING,
	MSK1_HEADER_STYLE_OVERFLOW		= HDS_OVERFLOW
} MSK1_HEADER_STYLE;

typedef enum _MSK1_LISTBOX_STYLE
{
	MSK1_LISTBOX_STYLE_COMBOBOX				= LBS_COMBOBOX,
	MSK1_LISTBOX_STYLE_DISABLENOSCROLL		= LBS_DISABLENOSCROLL,
	MSK1_LISTBOX_STYLE_EXTENDEDSEL			= LBS_EXTENDEDSEL,
	MSK1_LISTBOX_STYLE_HASSTRINGS			= LBS_HASSTRINGS,
	MSK1_LISTBOX_STYLE_MULTICOLUMN			= LBS_MULTICOLUMN,
	MSK1_LISTBOX_STYLE_MULTIPLESEL			= LBS_MULTIPLESEL,
	MSK1_LISTBOX_STYLE_NODATA				= LBS_NODATA,
	MSK1_LISTBOX_STYLE_NOINTERGRALHEIGHT	= LBS_NOINTEGRALHEIGHT,
	MSK1_LISTBOX_STYLE_NOREDRAW				= LBS_NOREDRAW,
	MSK1_LISTBOX_STYLE_NOSEL				= LBS_NOSEL,
	MSK1_LISTBOX_STYLE_NOTIFY				= LBS_NOTIFY,
	MSK1_LISTBOX_STYLE_OWNERDRAWFIXED		= LBS_OWNERDRAWFIXED,
	MSK1_LISTBOX_STYLE_OWNERDRAWVARIABLE	= LBS_OWNERDRAWVARIABLE,
	MSK1_LISTBOX_STYLE_SORT					= LBS_SORT,
	MSK1_LISTBOX_STYLE_STANDARD				= LBS_STANDARD,
	MSK1_LISTBOX_STYLE_USETABSTOPS			= LBS_USETABSTOPS,
	MSK1_LISTBOX_STYLE_WANTKEYBOARDINPUT	= LBS_WANTKEYBOARDINPUT
} MSK1_LISTBOX_STYLE;

typedef enum _MSK1_LISTVIEW_STYLE
{
	MSK1_LISTVIEW_STYLE_ALIGNLEFT		= LVS_ALIGNLEFT,
	MSK1_LISTVIEW_STYLE_ALIGNMASK		= LVS_ALIGNMASK,
	MSK1_LISTVIEW_STYLE_ALIGNTOP		= LVS_ALIGNTOP,
	MSK1_LISTVIEW_STYLE_AUTOARRANGE		= LVS_AUTOARRANGE,
	MSK1_LISTVIEW_STYLE_EDITLABELS		= LVS_EDITLABELS,
	MSK1_LISTVIEW_STYLE_ICON			= LVS_ICON,
	MSK1_LISTVIEW_STYLE_LIST			= LVS_LIST,
	MSK1_LISTVIEW_STYLE_NOCOLUMNHEADER	= LVS_NOCOLUMNHEADER,
	MSK1_LISTVIEW_STYLE_NOLABELWRAP		= LVS_NOLABELWRAP,
	MSK1_LISTVIEW_STYLE_NOSCROLL		= LVS_NOSCROLL,
	MSK1_LISTVIEW_STYLE_NOSORTHEADER	= LVS_NOSORTHEADER,
	MSK1_LISTVIEW_STYLE_OWNERDATA		= LVS_OWNERDATA,
	MSK1_LISTVIEW_STYLE_OWNERDRAWFIXED	= LVS_OWNERDRAWFIXED,
	MSK1_LISTVIEW_STYLE_REPORT			= LVS_REPORT,
	MSK1_LISTVIEW_STYLE_SHAREIMAGELISTS	= LVS_SHAREIMAGELISTS,
	MSK1_LISTVIEW_STYLE_SHOWSELALWAYS	= LVS_SHOWSELALWAYS,
	MSK1_LISTVIEW_STYLE_SINGLESEL		= LVS_SINGLESEL,
	MSK1_LISTVIEW_STYLE_SMALLICON		= LVS_SMALLICON,
	MSK1_LISTVIEW_STYLE_SORTASCENDING	= LVS_SORTASCENDING,
	MSK1_LISTVIEW_STYLE_SORTDESCENDING	= LVS_SORTDESCENDING,
	MSK1_LISTVIEW_STYLE_TYPEMASK		= LVS_TYPEMASK,
	MSK1_LISTVIEW_STYLE_TYPESTYLEMASK	= LVS_TYPESTYLEMASK
} MSK1_LISTVIEW_STYLE;

typedef enum _MSK1_LISTVIEW_EXSTYLE
{
	MSK1_LISTVIEW_EXSTYLE_AUTOAUTOARRANGE		= LVS_EX_AUTOAUTOARRANGE,
	MSK1_LISTVIEW_EXSTYLE_AUTOCHECKSELECT		= LVS_EX_AUTOCHECKSELECT,
	MSK1_LISTVIEW_EXSTYLE_AUTOSIZECOLUMNS		= LVS_EX_AUTOSIZECOLUMNS,
	MSK1_LISTVIEW_EXSTYLE_BORDERSELECT			= LVS_EX_BORDERSELECT,
	MSK1_LISTVIEW_EXSTYLE_CHECKBOXES			= LVS_EX_CHECKBOXES,
	MSK1_LISTVIEW_EXSTYLE_COLUMNOVERFLOW		= LVS_EX_COLUMNOVERFLOW,
	MSK1_LISTVIEW_EXSTYLE_COLUMNSNAPPOINTS		= LVS_EX_COLUMNSNAPPOINTS,
	MSK1_LISTVIEW_EXSTYLE_DOUBLEBUFFER			= LVS_EX_DOUBLEBUFFER,
	MSK1_LISTVIEW_EXSTYLE_FLATSB				= LVS_EX_FLATSB,
	MSK1_LISTVIEW_EXSTYLE_FULLROWSELECT			= LVS_EX_FULLROWSELECT,
	MSK1_LISTVIEW_EXSTYLE_GRIDLINES				= LVS_EX_GRIDLINES,
	MSK1_LISTVIEW_EXSTYLE_HEADERDRAGDROP		= LVS_EX_HEADERDRAGDROP,
	MSK1_LISTVIEW_EXSTYLE_HEADERINALLVIEWS		= LVS_EX_HEADERINALLVIEWS,
	MSK1_LISTVIEW_EXSTYLE_HIDELABELS			= LVS_EX_HIDELABELS,
	MSK1_LISTVIEW_EXSTYLE_INFOTIP				= LVS_EX_INFOTIP,
	MSK1_LISTVIEW_EXSTYLE_JUSTIFYCOLUMNS		= LVS_EX_JUSTIFYCOLUMNS,
	MSK1_LISTVIEW_EXSTYLE_LABELTIP				= LVS_EX_LABELTIP,
	MSK1_LISTVIEW_EXSTYLE_MULTIWORKAREAS		= LVS_EX_MULTIWORKAREAS,
	MSK1_LISTVIEW_EXSTYLE_ONECLICKACTIVATE		= LVS_EX_ONECLICKACTIVATE,
	MSK1_LISTVIEW_EXSTYLE_REGIONAL				= LVS_EX_REGIONAL,
	MSK1_LISTVIEW_EXSTYLE_SIMPLESELECT			= LVS_EX_SIMPLESELECT,
	MSK1_LISTVIEW_EXSTYLE_SINGLEROW				= LVS_EX_SINGLEROW,
	MSK1_LISTVIEW_EXSTYLE_SNAPTOGRID			= LVS_EX_SNAPTOGRID,
	MSK1_LISTVIEW_EXSTYLE_SUBITEMIMAGES			= LVS_EX_SUBITEMIMAGES,
	MSK1_LISTVIEW_EXSTYLE_TRACKSELECT			= LVS_EX_TRACKSELECT,
	MSK1_LISTVIEW_EXSTYLE_TRANSPARENTBKGND		= LVS_EX_TRANSPARENTBKGND,
	MSK1_LISTVIEW_EXSTYLE_TRANSPARENTSHADOWTEXT = LVS_EX_TRANSPARENTSHADOWTEXT,
	MSK1_LISTVIEW_EXSTYLE_TWOCLICKACTIVATE		= LVS_EX_TWOCLICKACTIVATE,
	MSK1_LISTVIEW_EXSTYLE_UNDERLINECOLD			= LVS_EX_UNDERLINECOLD,
	MSK1_LISTVIEW_EXSTYLE_UNDERLINEHOT			= LVS_EX_UNDERLINEHOT
} MSK1_LISTVIEW_EXSTYLE;

typedef enum _MSK1_MONTHCALENDAR_STYLE
{
	MSK1_MONTHCALENDAR_STYLE_DAYSTATE			= MCS_DAYSTATE,
	MSK1_MONTHCALENDAR_STYLE_MULTISELECT		= MCS_MULTISELECT,
	MSK1_MONTHCALENDAR_STYLE_WEEKNUMBERS		= MCS_WEEKNUMBERS,
	MSK1_MONTHCALENDAR_STYLE_NOTODAYCIRCLE		= MCS_NOTODAYCIRCLE,
	MSK1_MONTHCALENDAR_STYLE_NOTODAY			= MCS_NOTODAY,
	MSK1_MONTHCALENDAR_STYLE_NOTRAILINGDATES	= MCS_NOTRAILINGDATES,
	MSK1_MONTHCALENDAR_STYLE_SHORTDAYOFWEEK		= MCS_SHORTDAYSOFWEEK,
	MSK1_MONTHCALENDAR_STYLE_NOSELCHANGEONNAV	= MCS_NOSELCHANGEONNAV
} MSK1_MONTHCALENDAR_STYLE;

typedef enum _MSK1_PAGER_STYLE
{
	MSK1_PAGER_STYLE_AUTOSCROLL		= PGS_AUTOSCROLL,
	MSK1_PAGER_STYLE_DRAGNDROP		= PGS_DRAGNDROP,
	MSK1_PAGER_STYLE_HORZ			= PGS_HORZ,
	MSK1_PAGER_STYLE_VERT			= PGS_VERT
} MSK1_PAGER_STYLE;

typedef enum _MSK1_PROGRESSBAR_STYLE
{
	MSK1_PROGRESSBAR_STYLE_MARQUEE			= PBS_MARQUEE,
	MSK1_PROGRESSBAR_STYLE_SMOOTH			= PBS_SMOOTH,
	MSK1_PROGRESSBAR_STYLE_SMOOTHREVERSE	= PBS_SMOOTHREVERSE,
	MSK1_PROGRESSBAR_STYLE_VERTICAL			= PBS_VERTICAL
} MSK1_PROGRESSBAR_STYLE;

typedef enum _MSK1_REBAR_STYLE
{
	MSK1_REBAR_STYLE_AUTOSIZE				= RBS_AUTOSIZE,
	MSK1_REBAR_STYLE_BANDBORDERS			= RBS_BANDBORDERS,
	MSK1_REBAR_STYLE_DBLCLKTOGGLE			= RBS_DBLCLKTOGGLE,
	MSK1_REBAR_STYLE_FIXEDORDER				= RBS_FIXEDORDER,
	MSK1_REBAR_STYLE_REGISTERDROP			= RBS_REGISTERDROP,
	MSK1_REBAR_STYLE_TOOLTIPS				= RBS_TOOLTIPS,
	MSK1_REBAR_STYLE_VARHEIGHT				= RBS_VARHEIGHT,
	MSK1_REBAR_STYLE_VERTICALGRIPPER		= RBS_VERTICALGRIPPER
} MSK1_REBAR_STYLE;

typedef enum MSK1_RICHEDIT_STYLE
{
	MSK1_RICHEDIT_STYLE_DISABLENOSCROLL		= ES_DISABLENOSCROLL,
	MSK1_RICHEDIT_STYLE_EX_NOCALLOLEINIT	= ES_EX_NOCALLOLEINIT,
	MSK1_RICHEDIT_STYLE_NOIME				= ES_NOIME,
	MSK1_RICHEDIT_STYLE_NOOLEDRAGDROP		= ES_NOOLEDRAGDROP,
	MSK1_RICHEDIT_STYLE_SAVESEL				= ES_SAVESEL,
	MSK1_RICHEDIT_STYLE_SELECTIONBAR		= ES_SELECTIONBAR,
	MSK1_RICHEDIT_STYLE_SELFIME				= ES_SELFIME,
	MSK1_RICHEDIT_STYLE_SUNKEN				= ES_SUNKEN,
	MSK1_RICHEDIT_STYLE_VERTICAL			= ES_VERTICAL,
	MSK1_RICHEDIT_STYLE_AUTOHSCROLL			= ES_AUTOHSCROLL,
	MSK1_RICHEDIT_STYLE_AUTOVSCROLL			= ES_AUTOVSCROLL,
	MSK1_RICHEDIT_STYLE_CENTER				= ES_CENTER,
	MSK1_RICHEDIT_STYLE_LEFT				= ES_LEFT,
	MSK1_RICHEDIT_STYLE_MULTILINE			= ES_MULTILINE,
	MSK1_RICHEDIT_STYLE_NOHIDESEL			= ES_NOHIDESEL,
	MSK1_RICHEDIT_STYLE_NUMBER				= ES_NUMBER,
	MSK1_RICHEDIT_STYLE_PASSWORD			= ES_PASSWORD,
	MSK1_RICHEDIT_STYLE_READONLY			= ES_READONLY,
	MSK1_RICHEDIT_STYLE_RIGHT				= ES_RIGHT,
	MSK1_RICHEDIT_STYLE_WANTRETURN			= ES_WANTRETURN
} MSK1_RICHEDIT_STYLE;

typedef enum _MSK1_SCROLLBAR_STYLE
{
	MSK1_SCROLLBAR_STYLE_BOTTOMALIGN					= SBS_BOTTOMALIGN,
	MSK1_SCROLLBAR_STYLE_HORZ							= SBS_HORZ,
	MSK1_SCROLLBAR_STYLE_LEFTALIGN						= SBS_LEFTALIGN,
	MSK1_SCROLLBAR_STYLE_RIGHTALIGN						= SBS_RIGHTALIGN,
	MSK1_SCROLLBAR_STYLE_SIZEBOX						= SBS_SIZEBOX,
	MSK1_SCROLLBAR_STYLE_SIZEBOXBOTTOMRIGHTALIGN		= SBS_SIZEBOXBOTTOMRIGHTALIGN,
	MSK1_SCROLLBAR_STYLE_SIZEBOXTOPLEFTALIGN			= SBS_SIZEBOXTOPLEFTALIGN,
	MSK1_SCROLLBAR_STYLE_SIZEGRIP						= SBS_SIZEGRIP,
	MSK1_SCROLLBAR_STYLE_TOPALIGN						= SBS_TOPALIGN,
	MSK1_SCROLLBAR_STYLE_VERT							= SBS_VERT
} MSK1_SCROLLBAR_STYLE;

typedef enum _MSK1_SCROLLBAR_ARROWS
{
	MSK1_SCROLLBAR_ARROWS_DISABLE_BOTH	= ESB_DISABLE_BOTH,
	MSK1_SCROLLBAR_ARROWS_DISABLE_DOWN	= ESB_DISABLE_DOWN,
	MSK1_SCROLLBAR_ARROWS_DISABLE_LTUP	= ESB_DISABLE_LTUP,
	MSK1_SCROLLBAR_ARROWS_DISABLE_LEFT	= ESB_DISABLE_LEFT,
	MSK1_SCROLLBAR_ARROWS_DISABLE_RTDN	= ESB_DISABLE_RTDN,
	MSK1_SCROLLBAR_ARROWS_DISABLE_UP	= ESB_DISABLE_UP,
	MSK1_SCROLLBAR_ARROWS_ENABLE_BOTH	= ESB_ENABLE_BOTH
} MSK1_SCROLLBAR_ARROWS;

typedef enum _MSK1_SCROLLBAR_TYPE
{
	MSK1_SCROLLBAR_TYPE_CONTROL,
	MSK1_SCROLLBAR_TYPE_HORZIZONTAL,
	MSK1_SCROLLBAR_TYPE_VERTICAL
} MSK1_SCROLLBAR_TYPE;

typedef enum MSK1_SBOBJID_FLAGS
{
	MSK1_OBJID_CLIENT		= OBJID_CLIENT,
	MSK1_OBJID_HSCROLL		= OBJID_HSCROLL,
	MSK1_OBJID_VSCROLL		= OBJID_VSCROLL
} MSK1_SBOBJID_FLAGS;

typedef enum _MSK1_TAB_STYLE
{
	MSK1_TAB_STYLE_BOTTOM				= TCS_BOTTOM,
	MSK1_TAB_STYLE_BUTTONS				= TCS_BUTTONS,
	MSK1_TAB_STYLE_FIXEDWIDTH			= TCS_FIXEDWIDTH,
	MSK1_TAB_STYLE_FLATBUTTONS			= TCS_FLATBUTTONS,
	MSK1_TAB_STYLE_FOCUSNEVER			= TCS_FOCUSNEVER,
	MSK1_TAB_STYLE_FOCUSONBUTTONDOWN	= TCS_FOCUSONBUTTONDOWN,
	MSK1_TAB_STYLE_FORCEICONLEFT		= TCS_FORCEICONLEFT,
	MSK1_TAB_STYLE_FORCELABELLEFT		= TCS_FORCELABELLEFT,
	MSK1_TAB_STYLE_HOTTRACK				= TCS_HOTTRACK,
	MSK1_TAB_STYLE_MULTISELECT			= TCS_MULTISELECT,
	MSK1_TAB_STYLE_OWNERDRAWFIXED		= TCS_OWNERDRAWFIXED,
	MSK1_TAB_STYLE_RAGGEDRIGHT			= TCS_RAGGEDRIGHT,
	MSK1_TAB_STYLE_RIGHT				= TCS_RIGHT,
	MSK1_TAB_STYLE_RIGHTJUSTIFY			= TCS_RIGHTJUSTIFY,
	MSK1_TAB_STYLE_SCROLLOPPOSITE		= TCS_SCROLLOPPOSITE,
	MSK1_TAB_STYLE_SINGLELINE			= TCS_SINGLELINE,
	MSK1_TAB_STYLE_TABS					= TCS_TABS,
	MSK1_TAB_STYLE_TOOLTIPS				= TCS_TOOLTIPS,
	MSK1_TAB_STYLE_VERTICAL				= TCS_VERTICAL
} MSK1_TAB_STYLE;

typedef enum _MSK1_TAB_EXSTYLE
{
	MSK1_TAB_EXSTYLE_FLATSEPARATORS		= TCS_EX_FLATSEPARATORS,
	MSK1_TAB_EXSTYLE_RIGISTERDROP		= TCS_EX_REGISTERDROP
} MSK1_TAB_EXSTYLE;

typedef enum _MSK1_TOOLBAR_STYLE
{
	MSK1_TOOLBAR_STYLE_ALTDRAG			= TBSTYLE_ALTDRAG,
	MSK1_TOOLBAR_STYLE_CUSTOMERASE		= TBSTYLE_CUSTOMERASE,
	MSK1_TOOLBAR_STYLE_FLAT				= TBSTYLE_FLAT,
	MSK1_TOOLBAR_STYLE_LIST				= TBSTYLE_LIST,
	MSK1_TOOLBAR_STYLE_REGISTERDROP		= TBSTYLE_REGISTERDROP,
	MSK1_TOOLBAR_STYLE_TOOLTIPS			= TBSTYLE_TOOLTIPS,
	MSK1_TOOLBAR_STYLE_TRANSPARENT		= TBSTYLE_TRANSPARENT,
	MSK1_TOOLBAR_STYLE_WRAPABLE			= TBSTYLE_WRAPABLE,
	MSK1_TOOLBAR_STYLE_AUTOSIZE			= TBSTYLE_AUTOSIZE,
	MSK1_TOOLBAR_STYLE_BUTTON			= TBSTYLE_BUTTON,
	MSK1_TOOLBAR_STYLE_CHECK			= TBSTYLE_CHECK,
	MSK1_TOOLBAR_STYLE_CHECKGROUP		= TBSTYLE_CHECKGROUP,
	MSK1_TOOLBAR_STYLE_DROPDOWN			= TBSTYLE_DROPDOWN,
	MSK1_TOOLBAR_STYLE_GROUP			= TBSTYLE_GROUP,
	MSK1_TOOLBAR_STYLE_NOPREFIX			= TBSTYLE_NOPREFIX,
	MSK1_TOOLBAR_STYLE_SEP				= TBSTYLE_SEP
} MSK1_TOOLBAR_STYLE;

typedef enum _MSK1_TOOLBAR_EXSTYLE
{
	MSK1_TOOLBAR_EXSTYLE_DRAWDDARROWS			= TBSTYLE_EX_DRAWDDARROWS,
	MSK1_TOOLBAR_EXSTYLE_HIDECLIPPEDBUTTONS		= TBSTYLE_EX_HIDECLIPPEDBUTTONS,
	MSK1_TOOLBAR_EXSTYLE_DOUBLEBUFFER			= TBSTYLE_EX_DOUBLEBUFFER,
	MSK1_TOOLBAR_EXSTYLE_MIXEDBUTTONS			= TBSTYLE_EX_MIXEDBUTTONS,
	MSK1_TOOLBAR_EXSTYLE_MULTICOLUMN			= TBSTYLE_EX_MULTICOLUMN,
	MSK1_TOOLBAR_EXSTYLE_VERTICAL				= TBSTYLE_EX_VERTICAL
} MSK1_TOOLBAR_EXSTYLE;

typedef enum _MSK1_TOOLTIP_STYLE
{
	MSK1_TOOLTIP_STYLE_ALWAYSTIP			= TTS_ALWAYSTIP,
	MSK1_TOOLTIP_STYLE_BALLOON				= TTS_BALLOON,
	MSK1_TOOLTIP_STYLE_CLOSE				= TTS_CLOSE,
	MSK1_TOOLTIP_STYLE_NOANIMATE			= TTS_NOANIMATE,
	MSK1_TOOLTIP_STYLE_NOFADE				= TTS_NOFADE,
	MSK1_TOOLTIP_STYLE_NOPREFIX				= TTS_NOPREFIX,
	MSK1_TOOLTIP_STYLE_USEVISUALSTYLES		= TTS_USEVISUALSTYLE
} MSK1_TOOLTIP_STYLE;

typedef enum _MSK1_TRACKBAR_STYLE
{
	MSK1_TRACKBAR_STYLE_AUTOTICKS			= TBS_AUTOTICKS,
	MSK1_TRACKBAR_STYLE_VERT				= TBS_VERT,
	MSK1_TRACKBAR_STYLE_HORZ				= TBS_HORZ,
	MSK1_TRACKBAR_STYLE_TOP					= TBS_TOP,
	MSK1_TRACKBAR_STYLE_BOTTOM				= TBS_BOTTOM,
	MSK1_TRACKBAR_STYLE_LEFT				= TBS_LEFT,
	MSK1_TRACKBAR_STYLE_RIGHT				= TBS_RIGHT,
	MSK1_TRACKBAR_STYLE_BOTH				= TBS_BOTH,
	MSK1_TRACKBAR_STYLE_NOTICKS				= TBS_NOTICKS,
	MSK1_TRACKBAR_STYLE_ENABLESELRANGE		= TBS_ENABLESELRANGE,
	MSK1_TRACKBAR_STYLE_FIXEDLENGTH			= TBS_FIXEDLENGTH,
	MSK1_TRACKBAR_STYLE_NOTHUMB				= TBS_NOTHUMB,
	MSK1_TRACKBAR_STYLE_TOOLTIPS			= TBS_TOOLTIPS,
	MSK1_TRACKBAR_STYLE_REVERSED			= TBS_REVERSED,
	MSK1_TRACKBAR_STYLE_DOWNISLEFT			= TBS_DOWNISLEFT,
	MSK1_TRACKBAR_STYLE_NOTIFYBEFOREMOVE	= TBS_NOTIFYBEFOREMOVE,
	MSK1_TRACKBAR_STYLE_TRANSPARENTBKGND	= TBS_TRANSPARENTBKGND
} MSK1_TRACKBAR_STYLE;

typedef enum _MSK1_TREEVIEW_STYLE
{
	MSK1_TREEVIEW_STYLE_CHECKBOXES			= TVS_CHECKBOXES,
	MSK1_TREEVIEW_STYLE_DISABLEDRAGDROP		= TVS_DISABLEDRAGDROP,
	MSK1_TREEVIEW_STYLE_EDITLABLES			= TVS_EDITLABELS,
	MSK1_TREEVIEW_STYLE_FULLROWSELECT		= TVS_FULLROWSELECT,
	MSK1_TREEVIEW_STYLE_HASBUTTONS			= TVS_HASBUTTONS,
	MSK1_TREEVIEW_STYLE_HASLINES			= TVS_HASLINES,
	MSK1_TREEVIEW_STYLE_INFOTIP				= TVS_INFOTIP,
	MSK1_TREEVIEW_STYLE_LINESATROOT			= TVS_LINESATROOT,
	MSK1_TREEVIEW_STYLE_NOHSCROLL			= TVS_NOHSCROLL,
	MSK1_TREEVIEW_STYLE_NONEVENHEIGHT		= TVS_NONEVENHEIGHT,
	MSK1_TREEVIEW_STYLE_NOSCROLL			= TVS_NOSCROLL,
	MSK1_TREEVIEW_STYLE_NOTOOLTIPS			= TVS_NOTOOLTIPS,
	MSK1_TREEVIEW_STYLE_RTLREADING			= TVS_RTLREADING,
	MSK1_TREEVIEW_STYLE_SHOWSELALWAYS		= TVS_SHOWSELALWAYS,
	MSK1_TREEVIEW_STYLE_SINGLEEXPAND		= TVS_SINGLEEXPAND,
	MSK1_TREEVIEW_STYLE_TRACKSELECT			= TVS_TRACKSELECT
} MSK1_TREEVIEW_STYLE;

typedef enum _MSK1_TREEVIEW_EXSTYLE
{
	MSK1_TREEVIEW_EXSTYLE_AUTOHSCROLL			= TVS_EX_AUTOHSCROLL,
	MSK1_TREEVIEW_EXSTYLE_DIMMEDCHECKBOXES		= TVS_EX_DIMMEDCHECKBOXES,
	MSK1_TREEVIEW_EXSTYLE_DOUBLEBUFFER			= TVS_EX_DOUBLEBUFFER,
	MSK1_TREEVIEW_EXSTYLE_DRAWIMAGESYNC			= TVS_EX_DRAWIMAGEASYNC,
	MSK1_TREEVIEW_EXSTYLE_EXLUSIONCHECKBOCES	= TVS_EX_EXCLUSIONCHECKBOXES,
	MSK1_TREEVIEW_EXSTYLE_FADEINOUTEXPANDOS		= TVS_EX_FADEINOUTEXPANDOS,
	MSK1_TREEVIEW_EXSTYLE_MULTISELECT			= TVS_EX_MULTISELECT,
	MSK1_TREEVIEW_EXSTYLE_NOINDENTSTATE			= TVS_EX_NOINDENTSTATE,
	MSK1_TREEVIEW_EXSTYLE_NOSINGLECOLLAPSE		= TVS_EX_NOSINGLECOLLAPSE,
	MSK1_TREEVIEW_EXSTYLE_PARTIALCHECKBOXES		= TVS_EX_PARTIALCHECKBOXES,
	MSK1_TREEVIEW_EXSTYLE_RICHTOOLTIP			= TVS_EX_RICHTOOLTIP
} MSK1_TREEVIEW_EXSTYLE;

typedef enum _MSK1_UPDOWN_STYLE
{
	MSK1_UPDOWN_STYLE_ALIGNLEFT				= UDS_ALIGNLEFT,
	MSK1_UPDOWN_STYLE_ALIGNRIGHT			= UDS_ALIGNRIGHT,
	MSK1_UPDOWN_STYLE_ARROWKEYS				= UDS_ARROWKEYS,
	MSK1_UPDOWN_STYLE_AUTOBUDDY				= UDS_AUTOBUDDY,
	MSK1_UPDOWN_STYLE_HORZ					= UDS_HORZ,
	MSK1_UPDOWN_STYLE_HOTTRACK				= UDS_HOTTRACK,
	MSK1_UPDOWN_STYLE_NOTHOUSANDS			= UDS_NOTHOUSANDS,
	MSK1_UPDOWN_STYLE_SETBUDDYINT			= UDS_SETBUDDYINT,
	MSK1_UPDOWN_STYLE_WRAP					= UDS_WRAP
} MSK1_UPDOWN_STYLE;

typedef enum _MSK1_TOOLWINDOW_STYLE
{
	MSK1_TOOLWINDOW_STYLE_NONE
} MSK1_TOOLWINDOW_STYLE;

typedef enum MSK1_WINDOWPLACEMENT_FLAGS
{
	MSK1_WINDOWPLACEMENT_NONE,
	MSK1_WINDOWPLACEMENT_DOCK_LEFT,
	MSK1_WINDOWPLACEMENT_DOCK_RIGHT,
	MSK1_WINDOWPLACEMENT_DOCK_TOP,
	MSK1_WINDOWPLACEMENT_DOCK_BOTTOM,
	MSK1_WINDOWPLACEMENT_DOCK_FILL,
	MSK1_WINDOWPLACEMENT_DOCK_FLOAT,
	MSK1_WINDOWPLACEMENT_ANCHOR_LEFT,
	MSK1_WINDOWPLACEMENT_ANCHOR_RIGHT,
	MSK1_WINDOWPLACEMENT_ANCHOR_TOP,
	MSK1_WINDOWPLACEMENT_ANCHOR_BOTTOM
} MSK1_WINDOWPLACEMENT_FLAGS;

typedef enum _MSK1_PROPERTY_KEY
{
	MSK1_PROPERTY_KEY_BACKGROUND,
	MSK1_PROPERTY_KEY_MARGIN
} MSK1_PROPERTY_KEY;

typedef enum _MSK1_FULLSCREEN_OPTIONS
{
	MSK1_FULLSCREEN_STANDARD,
	MSK1_FULLSCREEN_ABSOLUTE,
	MSK1_FULLSCREEN_CLIENTONLY_STANDARD,
	MSK1_FULLSCREEN_CLIENTONLY_ABSOLUTE
} MSK1_FULLSCREEN_OPTIONS;

typedef enum _MSK1_APPLICATION_PROPERTIES
{
	MSK1_APPLICATION_PROPERTIES_SYSMENU,
	MSK1_APPLICATION_PROPERTIES_LEGACY_GRAPHICS,
	MSK1_APPLICATION_PROPERTIES_ACCERATED_GRAPHICS
} MSK1_APPLICATION_PROPERTIES;

typedef enum _MSK1_PROGRESSBAR_LIMIT
{
	MSK1_PROGRESSBAR_LIMIT_HIGH,
	MSK1_PROGRESSBAR_LIMIT_LOW
} MSK1_PROGRESSBAR_LIMIT;

typedef enum _MSK1_PROGRESSBAR_STATE
{
	MSK1_PROGRESSBAR_STATE_NORMAL = 1,
	MSK1_PROGRESSBAR_STATE_ERROR,
	MSK1_PROGRESSBAR_STATE_PAUSED
} MSK1_PROGRESSBAR_STATE;

typedef enum _MSK1_PROGRESSBAR_MODE
{
	MSK1_PROGRESSBAR_MODE_OFF,
	MSK1_PROGRESSBAR_MODE_ON
} MSK1_PROGRESSBAR_MODE;

typedef enum _MSK1_SCROLLBAR_MASK
{
	MSK1_SCROLLBAR_MASK_ALL,
	MSK1_SCROLLBAR_MASK_DISABLENOSCROLL,
	MSK1_SCROLLBAR_MASK_PAGE,
	MSK1_SCROLLBAR_MASK_POS,
	MSK1_SCROLLBAR_MASK_RANGE,
	MSK1_SCROLLBAR_MASK_TRACKPOS
} MSK1_SCROLLBAR_MASK;

typedef enum _MSK1_SCROLLBAR_OPTIONS
{
	MSK1_SCROLLBAR_OPTIONS_VERTICAL,
	MSK1_SCROLLBAR_OPTIONS_HORIZONTAL,
	MSK1_SCROLLBAR_OPTIONS_CONTROL
} MSK1_SCROLLBAR_OPTIONS;

typedef enum _MSK1_SELECTION_TYPE
{
	MSK1_SELECTION_TYPE_EMPTY				= SEL_EMPTY,
	MSK1_SELECTION_TYPE_TEXT				= SEL_TEXT,
	MSK1_SELECTION_TYPE_OBJECT				= SEL_OBJECT,
	MSK1_SELECTION_TYPE_MULTICHARACTER		= SEL_MULTICHAR,
	MSK1_SELECTION_TYPE_MULTIOBJECT			= SEL_MULTIOBJECT
} MSK1_SELECTION_TYPE;

typedef enum _MSK1_RICHEDIT_TEXTLENGTH
{
	MSK1_RICHEDIT_TEXTLENGTH_DEFAULT	= GTL_DEFAULT,
	MSK1_RICHEDIT_TEXTLENGTH_USECRLF	= GTL_USECRLF,
	MSK1_RICHEDIT_TEXTLENGTH_PRECISE	= GTL_PRECISE,
	MSK1_RICHEDIT_TEXTLENGTH_CLOSE		= GTL_CLOSE,
	MSK1_RICHEDIT_TEXTLENGTH_NUMCHARS	= GTL_NUMCHARS,
	MSK1_RICHEDIT_TEXTLENGTH_NUMBYTES	= GTL_NUMBYTES
} MSK1_RICHEDIT_TEXTLENGTH;

typedef enum _MSK1_MESSAGE_TYPE
{
	MSK1_MESSAGE_TYPE_CREATE
} MSK1_MESSAGE_TYPE;

typedef struct _MSK1_SCROLLINFO { // SCROLLINFO
	UINT cbSize;
	MSK1_SCROLLBAR_MASK fMask;
	int  nMin;
	int  nMax;
	UINT nPage;
	int  nPos;
	int  nTrackPos;
} MSK1_SCROLLINFO, *LPMSK1_SCROLLINFO;

typedef struct MSK1_MARGIN_U {
	UINT32 left;
	UINT32 top;
	UINT32 right;
	UINT32 bottom;
} MSK1_MARGIN_U;

typedef struct MSK1_SIZE_U {
	UINT32 width;
	UINT32 height;
} MSK1_SIZE_U;

typedef struct MSK1_POINT_U {
	UINT32 x;
	UINT32 y;
} MSK1_POINT_U;

typedef struct _MSK1_STATUSBAR_BORDER_U
{
	UINT nHorizontal;
	UINT nVertical;
	UINT nSpacing;
} MSK1_STATUSBAR_BORDER_U;

typedef void (IUnknown::*MSK1_PMF)(void);

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fce9") IMSK1WindowApplication  : 
	public IUnknown
{
	__checkReturn STDMETHOD(CreateStatusBar)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_STATUSBAR_STYLE sbarStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1StatusBarCtrl** ppStatusbarCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateScrollBar)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_SCROLLBAR_STYLE sbStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1ScrollBarCtrl** ppScrollbarCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateProgressBar)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_PROGRESSBAR_STYLE pbStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1ProgressBarCtrl** ppProgressBarCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateReBar)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_REBAR_STYLE rbStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1ReBarCtrl** ppReBarCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateToolBar)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_TOOLBAR_STYLE tbStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1ToolBarCtrl** ppToolBarCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateTextBox)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_TEXTBOX_STYLE eStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1TextBoxCtrl** ppTextBoxCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateListBox)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_LISTBOX_STYLE lbStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1ListBoxCtrl** ppListBoxCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateComboBox)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_COMBOBOX_STYLE cbStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1ComboBoxCtrl** ppComboBoxCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateRichTextBox)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_RICHEDIT_STYLE reStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1RichTextBoxCtrl** ppRichTextBoxCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateTabView)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_TAB_STYLE reStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1TabViewCtrl** ppTabViewCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateTreeView)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_TREEVIEW_STYLE tvStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1TreeViewCtrl** ppTreeViewCtrl
		) PURE;

	__checkReturn STDMETHOD(CreatePropertySheetDialog)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__inout IMSK1PropertySheetDialog** ppPropertySheetDialog
		) PURE;

	__checkReturn STDMETHOD(CreateTaskDialog)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__inout IMSK1TaskDialog** ppTaskDialog
		) PURE;

	__checkReturn STDMETHOD(CreateDateTimePicker)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_DATETIME_STYLE dtStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1DateTimePickerCtrl** ppDateTimePickerCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateHeader)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_HEADER_STYLE hdStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1HeaderCtrl** ppHeaderCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateAnimation)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_ANIMATION_STYLE aniStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1AnimationCtrl** ppAnimationCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateUpDown)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_UPDOWN_STYLE udStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1UpDownCtrl** ppUpDownCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateButton)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_BUTTON_STYLE btnStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1ButtonCtrl** ppButtonCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateMonthCalendar)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,	
		__in MSK1_MONTHCALENDAR_STYLE mcStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1MonthCalendarCtrl** ppMonthCalendarCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateToolTip)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_TOOLTIP_STYLE ttStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1ToolTipCtrl** ppToolTipCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateHotKey)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__inout IMSK1HotKeyCtrl** ppHotKeyCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateImageList)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,	
		__inout IMSK1ImageListCtrl** ppImageListCtrl
		) PURE;

	__checkReturn STDMETHOD(CreatePager)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,	
		__in MSK1_PAGER_STYLE pgrStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1PagerCtrl** ppPagerCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateStatic)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,	
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1StaticCtrl** ppStaticCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateSysLink)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__inout IMSK1SysLinkCtrl** ppSysLinkCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateTrackBar)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_TRACKBAR_STYLE tkbStyle,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1TrackBarCtrl** ppTrackBarCtrl
		) PURE;

	__checkReturn STDMETHOD(CreateToolWindow)(
		__in MSK1_POINT_U position,
		__in MSK1_SIZE_U size,
		__in MSK1_WINDOWPLACEMENT_FLAGS wpFlags,
		__inout IMSK1ToolWindow** ppToolWindowCtrl
		) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fcf0") IMSK1Framework  : 
	public IUnknown
{
	__checkReturn STDMETHOD(Initialize)(
		__inout IMSK1WindowApplication** pWinApp
		) PURE;

	__checkReturn STDMETHOD(SetValue)(
		__in MSK1_PROPERTY_KEY key, 
		__in DWORD value
		) PURE;

	__checkReturn STDMETHOD_(int, Run)(void) PURE;

	__checkReturn STDMETHOD(Destroy)(void) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fcf3") IMSK1Window  : 
	public IUnknown
{
	__checkReturn STDMETHOD(RegisterMessage)(
		__in IUnknown* ptrClass,
		__in MSK1_MESSAGE_TYPE msg,
		__in MSK1_PMF pmf
		) PURE;

	__checkReturn STDMETHOD(PlaceWindow)(
		__in MSK1_WINDOWPLACEMENT_FLAGS dock
		) PURE;

	__checkReturn STDMETHOD(SetMargin)(
		__in MSK1_MARGIN_U margin
		) PURE;

	__checkReturn STDMETHOD(SetBorder)(
		__in D2D1_COLOR_F color,
		__in LONG size
		) PURE;

	__checkReturn STDMETHOD_(FLOAT, PixeltoDipX)(
		__in int x
		) PURE;

	__checkReturn STDMETHOD_(FLOAT, PixeltoDipY)(
		__in int y
		) PURE;

	__checkReturn STDMETHOD_(HINSTANCE, GetModuleInstance(void)) PURE;

	__checkReturn STDMETHOD_(HWND, GetWindowHandle(void)) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fcf6") IMSK1StatusBarCtrl : 
	public virtual IMSK1Window
{
	__checkReturn STDMETHOD_(BOOL, GetBorders(
		MSK1_STATUSBAR_BORDER_U borderSizes
		)) PURE;

	__checkReturn STDMETHOD_(HICON, GetIcon(
		UINT iPart
		)) PURE;

	__checkReturn STDMETHOD_(UINT, GetParts(
		UINT nParts,
		UINT* Parts
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetRect(
		UINT nPane,
		LPRECT lpRect
		)) PURE;

	__checkReturn STDMETHOD_(UINT, GetText(
		LPCTSTR lpszText, 
		UINT nPane,
		UINT* pType = NULL
		)) PURE;

	__checkReturn STDMETHOD_(UINT, GetTextLength(
		UINT nPane,
		UINT* pType = NULL
		)) PURE;

	__checkReturn STDMETHOD_(LPCTSTR, GetTipText(
		UINT nPane
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, IsSimple(
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetBkColor(
		COLORREF cr,
		BOOL bRedraw = FALSE
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetIcon(
		UINT nPane, 
		HICON hIcon
		)) PURE;

	__checkReturn STDMETHOD_(void, SetMinHeight(
		UINT nHeight
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetParts(
		UINT nParts, 
		UINT* pWidths
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetSimple(
		BOOL bSimple = TRUE
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetText(
		LPCTSTR lpszText, 
		UINT nPane, 
		UINT nType,
		COLORREF bgColor = CLR_DEFAULT
		)) PURE;

	__checkReturn STDMETHOD_(void, SetTipText(
		int nPane, 
		LPCTSTR pszTipText 
		)) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fcf7") IMSK1ScrollBarCtrl : 
	public virtual IMSK1Window
{
	__checkReturn STDMETHOD_(BOOL, EnableArrows(
		__in MSK1_SCROLLBAR_ARROWS fsbArrow
		)) PURE;

	__checkReturn STDMETHOD_(int, GetPosition(
		__in MSK1_SCROLLBAR_TYPE fsbType
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetRange(
		__in MSK1_SCROLLBAR_TYPE fsbType,
		__inout LPINT nMinPos,
		__inout LPINT nMaxPos
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetScrollBarInfo(
		__in MSK1_SCROLLBAR_TYPE objId,
		__out PSCROLLBARINFO psbi
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetScrollInfo(
		__in MSK1_SCROLLBAR_TYPE fsbType,
		__inout LPSCROLLINFO lpsi
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetPosition(
		__in MSK1_SCROLLBAR_TYPE fsbType,
		__in int nPos,
		__in BOOL bRedraw
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetRange(
		__in MSK1_SCROLLBAR_TYPE fsbType,
		__in int nMinPos,
		__in int nMaxPos,
		__in BOOL bRedraw
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetScrollInfo(
		__in MSK1_SCROLLBAR_OPTIONS sbOptions,
		__in LPMSK1_SCROLLINFO lpsi,
		__in BOOL bRedraw
		)) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fcf8") IMSK1ProgressBarCtrl : 
	public virtual IMSK1Window
{
	__checkReturn STDMETHOD_(UINT, SetDeltaPosition(
		__in UINT nPos
		)) PURE;

	__checkReturn STDMETHOD_(COLORREF, GetBarColor(
		)) PURE;

	__checkReturn STDMETHOD_(COLORREF, GetBkColor(
		)) PURE;

	__checkReturn STDMETHOD_(UINT, GetPosition(
		)) PURE;

	__checkReturn STDMETHOD_(int, GetRange(
		__in MSK1_PROGRESSBAR_LIMIT pbLimit,
		__in PBRANGE pbRange
		)) PURE;

	__checkReturn STDMETHOD_(MSK1_PROGRESSBAR_STATE, GetState(
		)) PURE;

	__checkReturn STDMETHOD_(UINT, GetStep(
		)) PURE;

	__checkReturn STDMETHOD_(COLORREF, SetBarColor(
		__in COLORREF color
		)) PURE;

	__checkReturn STDMETHOD_(COLORREF, SetBkColor(
		__in COLORREF color
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetMarquee(
		__in MSK1_PROGRESSBAR_MODE pbMode,
		__in UINT nUpdateTimeInMilliseconds
		)) PURE;

	__checkReturn STDMETHOD_(int, SetPosition(
		__in int nPosition
		)) PURE;

	__checkReturn STDMETHOD_(void, SetRange(
		__inout int nMinRange,
		__inout int nMaxRange
		)) PURE;

	__checkReturn STDMETHOD_(MSK1_PROGRESSBAR_STATE, SetState(
		__in MSK1_PROGRESSBAR_STATE pbState
		)) PURE;

	__checkReturn STDMETHOD_(UINT, SetStep(
		__in UINT nStep
		)) PURE;

	__checkReturn STDMETHOD_(UINT, Step(
		)) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fcf9") IMSK1ReBarCtrl : 
	public virtual IMSK1Window
{
	__checkReturn STDMETHOD_(void, BeginDrag(
		__in UINT nIndex,
		__in int iStartMouseCoordX,
		__in int iStartMouseCoordY
		)) PURE;

	__checkReturn STDMETHOD_(int, DeleteBand(
		__in UINT nIndex
		)) PURE;

	__checkReturn STDMETHOD_(void, DragMove(
		__in int iStartMouseCoordX,
		__in int iStartMouseCoordY
		)) PURE;

	__checkReturn STDMETHOD_(void, EndDrag(
		)) PURE;

	__checkReturn STDMETHOD_(void, GetBandBorders(
		__in UINT nIndex,
		__in LPRECT rcBorders
		)) PURE;

	__checkReturn STDMETHOD_(UINT, GetBandCount(
		)) PURE;

	__checkReturn STDMETHOD_(int, GetBandInfo(
		__in UINT nIndex,
		__in LPREBARBANDINFO rbBandInfo
		)) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd00") IMSK1ToolBarCtrl : 
	public virtual IMSK1Window
{
	__checkReturn STDMETHOD_(int, AddBitmap(
		__in UINT numBtnImages,
		__in TBADDBITMAP tbAddBitmap
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, AddButtons(
		__in UINT numBtns,
		__in TBBUTTON tbAddBitmap
		)) PURE;

	__checkReturn STDMETHOD_(int, AddString(
		__in HINSTANCE hInstance,
		__in LPCWSTR hResource
		)) PURE;

	__checkReturn STDMETHOD_(void, AutoSize()) PURE;

	__checkReturn STDMETHOD_(UINT, ButtonCount()) PURE;

	__checkReturn STDMETHOD_(void, ButtonStructSize(
		__inout UINT nSizeInBytes
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, ChangeBitmap(
		__in int idButton,
		__in int iBitmap
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, CheckButton(
		int nId, 
		BOOL bCheck = TRUE  
		)) PURE;

	__checkReturn STDMETHOD_(UINT, CommandToIndex(
		__in UINT nID
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, Customize(
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, DeleteButton(
		__in int nID
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, EnableButton(
		__in int nID,
		__in BOOL bEnable
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetAnchorHighLight(
		)) PURE;

	__checkReturn STDMETHOD_(int, GetBitmap(
		__in int nID
		)) PURE;

	__checkReturn STDMETHOD_(UINT, GetBitmapFlags(
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, GetButton(
		__in int nIndex,
		__in LPTBBUTTON lpButton
		)) PURE;

	__checkReturn STDMETHOD_(int, GetButtonCount(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetButtonInfo(
		__in int nID,
		__in TBBUTTONINFO* ptbbi  
		)) CONST PURE;

	__checkReturn STDMETHOD_(DWORD, GetButtonSize(
		)) CONST PURE;

	__checkReturn STDMETHOD_(LPCWSTR, GetButtonText(
		__in int idButton
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, GetColorScheme(
		__in LPCOLORSCHEME lpColorScheme
		)) CONST PURE;

	__checkReturn STDMETHOD_(HIMAGELIST, GetDisabledImageList(
		)) CONST PURE;

	__checkReturn STDMETHOD_(DWORD, GetExtendedStyle(
		)) PURE;
	
	__checkReturn STDMETHOD_(HIMAGELIST, GetHotImageList(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetHotImage(
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, GetIdealSize(
		__in BOOL bWidth,
		__in LPSIZE lpSize
		)) CONST PURE;

	__checkReturn STDMETHOD_(HIMAGELIST, GetImageList(
		)) CONST PURE;

	__checkReturn STDMETHOD_(UINT, GetImageListCount(
		)) CONST PURE;

	__checkReturn STDMETHOD_(UINT, GetInsertMark(
		__in LPTBINSERTMARK lptbInsertMark
		)) CONST PURE;

	__checkReturn STDMETHOD_(COLORREF, GetInsertMarkColor(
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, GetItemDropDownRect(
		__in UINT nIndex,
		__inout LPRECT lpRect
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, GetItemRect(
		__in UINT nIndex,
		__inout LPRECT lpRect
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, GetMaxSize(
		__inout LPRECT lpRect
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, GetMaxSize(
		__inout LPTBMETRICS lptMetrics
		)) PURE;

	__checkReturn STDMETHOD(GetDropDownTarget)(
		__inout IDropTarget** ppDropTarget
		) CONST PURE;

	__checkReturn STDMETHOD_(DWORD, GetPadding(
		)) CONST PURE;

	__checkReturn STDMETHOD_(HIMAGELIST, GetPressedImageList(
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, GetRect(
		__inout LPRECT lpRect
		)) CONST PURE;

	__checkReturn STDMETHOD_(UINT, GetRows(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetState(
		__in int idButton
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetString(
		__in int nStringIndex,
		__in LPTSTR lpstrString,
		__in int cchMaxLength
		)) CONST PURE;

	__checkReturn STDMETHOD_(DWORD, GetStyle(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetTextRows(
		)) CONST PURE;

	__checkReturn STDMETHOD_(HWND, GetToolTip(
		)) CONST PURE;

	__checkReturn STDMETHOD_(UINT, GetUnicodeFormat(
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, HideButton(
		__in int nID,
		__in BOOL bHidden
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, HitTest(
		__in LPPOINT lpHitPoint
		)) PURE;

	__checkReturn STDMETHOD_(int, HitText(
		__in LPPOINT lpHitPoint
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, Indeterminate(
		__in int nID,
		__in BOOL bIndeterminate
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, InsertButton(
		__in int nIndex,
		__in LPTBBUTTON lptbButton
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, InsertMarkHitTest(
		__in LPPOINT lpPoint,
		__in LPTBINSERTMARK lptbInsertMark
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, IsButtonChecked(
		__in int nID
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, IsButtonEnabled(
		__in int nID
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, IsButtonHidden(
		__in int nID
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, IsButtonHighLighted(
		__in int nID
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, IsButtonIndeterminate(
		__in int nID
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, IsButtonPressed(
		__in int nID
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, LoadImages(
		__in int iBitmapId,
		__in HINSTANCE hInstance
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, MapAccelerator(
		__in TCHAR chAccel,
		__in UINT* PIDBtn
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, MarkButton(
		__in int nID,
		__in BOOL fHighlight = TRUE
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, MoveButton(
		__in UINT nOldPos,
		__in UINT nNewPos
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, PressButton(
		__in UINT nID,
		__in UINT bPress = TRUE
		)) PURE;

	__checkReturn STDMETHOD_(void, RestoreState(
		__in HKEY nRootKey,
		__in LPCTSTR lpszSubKey,
		__in LPCTSTR lpszValueName
		)) PURE;

	__checkReturn STDMETHOD_(void, SaveState(
		__in HKEY nRootKey,
		__in LPCTSTR lpszSubKey,
		__in LPCTSTR lpszValueName
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetAnchorHighlight(
		__in BOOL bAnchor = TRUE
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetBitmapSize(
		__in SIZE size
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetButtonInfo(
		__in int nID,
		__in TBBUTTONINFO* ptbbi
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetButtonSize(
		__in SIZE size
		)) PURE;

	__checkReturn STDMETHOD_(void, SetButtonStructSize(
		__in UINT nSizeInBytes
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetButtonWidth(
		__in int cxMin,
		__in int cxMax
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetCmdID(
		__in int nIndex,
		__in UINT nID
		)) PURE;

	__checkReturn STDMETHOD_(HIMAGELIST, SetDiabledImageList(
		__in HIMAGELIST hImageList
		)) PURE;

	__checkReturn STDMETHOD_(DWORD, SetDrawTextFlags(
		__in DWORD dwMask,
		__in DWORD dwFlags
		)) PURE;

	__checkReturn STDMETHOD_(DWORD, SetExtendedStyle(
		__in DWORD dwExtendedStyle
		)) PURE;

	__checkReturn STDMETHOD_(HIMAGELIST, SetHotImage(
		__in HIMAGELIST hImageList
		)) PURE;

	__checkReturn STDMETHOD_(int, SetHotItem(
		__in int nHot
		)) PURE;

	__checkReturn STDMETHOD_(HIMAGELIST, SetImageList(
		__in HIMAGELIST hImageList
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetIndent(
		__in int iIndent
		)) PURE;

	__checkReturn STDMETHOD_(void, SetInsertMark(
		__in LPTBINSERTMARK lptbim
		)) PURE;

	__checkReturn STDMETHOD_(COLORREF, SetInsertMarkColor(
		__in COLORREF clr
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetMaxTextRows(
		__in int iMaxRows
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetMetrics(
		__in LPTBMETRICS ptbm
		)) PURE;
	
	__checkReturn STDMETHOD_(void, SetOwner(
		__in HWND hWnd
		)) PURE;

	__checkReturn STDMETHOD_(void, SetRows(
		__in int nRows,
		__in BOOL bLarger,
		__in LPRECT lpRect
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetRows(
		__in int nID,
		__in UINT nState
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetStyle(
		__in DWORD dwStyle
		)) PURE;

	__checkReturn STDMETHOD_(void, SetToolTips(
		__in HWND hWndToolTip
		)) PURE;

	__checkReturn STDMETHOD(SetWindowTheme)(
		__in LPCWSTR pszSubAppName
		) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd01") IMSK1TextBoxCtrl : 
	public virtual IMSK1Window
{
	__checkReturn STDMETHOD_(BOOL, CanUndo(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, CharFromPosition(
		__in POINT pt
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, Clear(
		)) PURE;

	__checkReturn STDMETHOD_(void, Copy(
		)) PURE;

	__checkReturn STDMETHOD_(void, Cut(
		)) PURE;

	__checkReturn STDMETHOD_(void, EmptyUndoBuffer(
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, FormatLines(
		__in BOOL bAddEOL
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetCueBanner(
		__in LPWSTR lpwText,
		__in  int cchText
		)) PURE;

	__checkReturn STDMETHOD_(int, GetFirstVisibleLine(
		)) CONST PURE;

	__checkReturn STDMETHOD_(HLOCAL, GetHandle(
		)) CONST PURE;

	__checkReturn STDMETHOD_(UINT, GetLimitText(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetLine(
		int nIndex,
		LPTSTR lpszBuffer,
		int nMaxLength = -1
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetLineCount(
		)) CONST PURE;

	__checkReturn STDMETHOD_(DWORD, GetMargins(
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, GetModify(
		)) CONST PURE;

	__checkReturn STDMETHOD_(TCHAR, GetPasswordCharacter(
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, GetRect(
		__inout LPRECT lpRect
		)) PURE;

	__checkReturn STDMETHOD_(DWORD, GetSel(
		__inout int& nStartChar,
		__inout int& nEndChar
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, LimitText(
		__in int nChars = 0
		)) PURE;

	__checkReturn STDMETHOD_(int, LineFromChar(
		__in int nIndex = -1
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, LineIndex(
		__in int nLine = -1
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, LineLength(
		__in int nLine = -1
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, LineScroll(
		__in int nLines,
		__in int nChars = 0
		)) PURE;

	__checkReturn STDMETHOD_(void, Paste(
		)) PURE;

	__checkReturn STDMETHOD_(POINT, PostFromChar(
		__in UINT nChar
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, ReplaceSelect(
		__in LPCTSTR lpszNewText,
		__in BOOL bCanUndo = FALSE
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetCueBanner(
		__in LPCWSTR lpcwText
		)) PURE;

	__checkReturn STDMETHOD_(void, SetHandle(
		__in HLOCAL hBuffer
		)) PURE;

	__checkReturn STDMETHOD_(void, SetLimitText(
		__in UINT nMax
		)) PURE;

	__checkReturn STDMETHOD_(void, SetMargins(
		__in UINT nLeft,
		__in UINT nRight
		)) PURE;

	__checkReturn STDMETHOD_(void, SetModify(
		__in BOOL bModified = TRUE 
		)) PURE;

	__checkReturn STDMETHOD_(void, SetPasswordCharacter(
		__in TCHAR ch
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetReadOnly(
		__in BOOL bReadOnly = TRUE 
		)) PURE;

	__checkReturn STDMETHOD_(void, SetRect(
		__in LPCRECT lpRect 
		)) PURE;

	__checkReturn STDMETHOD_(void, SetRectNP(
		__in LPCRECT lpRect 
		)) PURE;

	__checkReturn STDMETHOD_(void, SetSelection(
		__in DWORD dwSelection,
		__in BOOL bNoScroll = FALSE
		)) PURE;

	__checkReturn STDMETHOD_(void, SetSelection(
		__in int nStartCharacter,
		__in int nEndCharacter,
		__in BOOL bNoScroll = FALSE
		)) PURE;
	
	__checkReturn STDMETHOD_(void, SetTabStops(
		)) PURE;

	__checkReturn STDMETHOD_(void, SetTabStops(
		__in const int& cxEachStop
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetTabStops(
		__in int nTabStops,
		__in LPINT rgTabStops
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, Undo(
		)) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd02") IMSK1ListBoxCtrl : 
	public virtual IMSK1Window
{
	__checkReturn STDMETHOD_(int, AddString(
		__in LPCTSTR lpszItem 
		)) PURE;

	__checkReturn STDMETHOD_(int, CharToItem(
		__in UINT nKey,
		__in UINT nIndex
		)) PURE;

	__checkReturn STDMETHOD_(int, CompareItem(
		__in LPCOMPAREITEMSTRUCT lpCompareItemStruct
		)) PURE;

	__checkReturn STDMETHOD_(void, DeleteItem(
		__in LPCOMPAREITEMSTRUCT lpCompareItemStruct
		)) PURE;

	__checkReturn STDMETHOD_(int, DeleteString(
		__in UINT nIndex
		)) PURE;

	__checkReturn STDMETHOD_(int, Dir(
		__in UINT iAttribute,
		__in LPCTSTR lpszWildCard 
		)) PURE;

	__checkReturn STDMETHOD_(void, DrawItem(
		__in LPDRAWITEMSTRUCT lpDrawItemStruct 
		)) PURE;

	__checkReturn STDMETHOD_(int, FindString(
		__in int nStartAfter,
		__in LPCTSTR lpszItem 
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, FindStringExact(
		__in int nIndexStart,
		__in LPCTSTR lpszItem 
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetAnchorIndex(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetCaretIndex(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetCount(
		)) CONST PURE;
	
	__checkReturn STDMETHOD_(int, GetCurrentSelection(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetHorizontalExtent(
		)) CONST PURE;

	__checkReturn STDMETHOD_(DWORD_PTR, GetItemData(
		__in int nIndex
		)) CONST PURE;

	__checkReturn STDMETHOD_(void*, GetItemDataPtr(
		__in int nIndex
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetItemHeight(
		__in int nIndex
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetItemRect(
		__in int nIndex,
		__out LPRECT lpRect
		)) CONST PURE;

	__checkReturn STDMETHOD_(DWORD, GetListBoxInfo(
		)) CONST PURE;

	__checkReturn STDMETHOD_(LCID, GetLocale(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetSelection(
		__in int nIndex
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetSelectionCount(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetSelectedItems(
		__in int nMaxItems,
		__in LPINT rgIndex 
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetText(
		__in int nIndex,
		__inout LPTSTR lpszBuffer 
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetTextLength(
		__in int nIndex
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetTopIndex(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, InitializeStorage(
		__in int nItems,
		__in UINT nBytes
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, InsertString(
		__in int nItems,
		__in LPCTSTR lpszItem
		)) PURE;

	__checkReturn STDMETHOD_(UINT, ItemFromPoint(
		__in POINT pt,
		__in BOOL& bOutsideClient
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, MeasureItem(
		__in LPMEASUREITEMSTRUCT lpMeasureItemStruct 
		)) PURE;

	__checkReturn STDMETHOD_(void, ResetContent(
		)) PURE;

	__checkReturn STDMETHOD_(int, SelectString(
		__in int nStartAfter,
		__in LPCTSTR lpszItem
		)) PURE;

	__checkReturn STDMETHOD_(int, SelectItemRange(
		__in BOOL bSelect,
		__in int nFirstItem,
		__in int nLastItem 
		)) PURE;

	__checkReturn STDMETHOD_(void, SetAnchorIndex(
		__in int nIndex
		)) PURE;

	__checkReturn STDMETHOD_(int, SetCaretIndex(
		__in int nIndex,
		__in BOOL bScroll = TRUE
		)) PURE;

	__checkReturn STDMETHOD_(void, SetColumnWidth(
		__in int cxWidth
		)) PURE;

	__checkReturn STDMETHOD_(int, SetCurrentSelection(
		__in int nSelect
		)) PURE;

	__checkReturn STDMETHOD_(void, SetHorizontalExtent(
		__in int cxExtent 
		)) PURE;

	__checkReturn STDMETHOD_(int, SetItemData(
		__in int nIndex,
		__in DWORD_PTR dwItemData
		)) PURE;

	__checkReturn STDMETHOD_(int, SetItemDataPtr(
		__in int nIndex,
		__in void* pData
		)) PURE;

	__checkReturn STDMETHOD_(int, SetItemHeight(
		__in int nIndex,
		__in UINT cyItemHeight
		)) PURE;

	__checkReturn STDMETHOD_(LCID, SetLocale(
		__in LCID nNewLocale
		)) PURE;

	__checkReturn STDMETHOD_(int, SetSelection(
		__in int nIndex,
		__in BOOL bSelect = TRUE
		)) PURE;

	__checkReturn STDMETHOD_(void, SetTabStops(
		)) PURE;

	__checkReturn STDMETHOD_(void, SetTabStops(
		__inout const int& cxEachStop
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetTabStops(
		__in int nTabStops,
		__in LPINT rgTabStops
		)) PURE;

	__checkReturn STDMETHOD_(int, SetTopIndex(
		__in int nIndex
		)) PURE;

	__checkReturn STDMETHOD_(int, VirtualKeyToItem(
		__in UINT nKey,
		__in UINT nIndex
		)) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd03") IMSK1ComboBoxCtrl : 
	public virtual IMSK1Window
{
	__checkReturn STDMETHOD_(int, AddItemData(
		__in LPARAM data
		)) PURE;

	__checkReturn STDMETHOD_(int, AddString(
		__in LPCTSTR lpsz
		)) PURE;

	__checkReturn STDMETHOD_(int, DeleteString(
		__in  int index
		)) PURE;

	__checkReturn STDMETHOD_(int, Dir(
		__in MSK1_CBDDL_ATTR attrs,
		__in LPCTSTR lpszFileSpec
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, Enable(
		__in BOOL bEnable
		)) PURE;

	__checkReturn STDMETHOD_(int, FindItemData(
		__in int nIndexStart,
		__in LPARAM data
		)) PURE;

	__checkReturn STDMETHOD_(int, FindString(
		__in int nIndexStart,
		__in LPCTSTR lpszFind
		)) PURE;

	__checkReturn STDMETHOD_(int, FindStringExact(
		__in int nIndexStart,
		__in LPCTSTR lpszFind
		)) PURE;

	__checkReturn STDMETHOD_(int, GetCount(
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetCueBannerText(
		__in LPWSTR lpwText,
		__in int cchText
		)) PURE;

	__checkReturn STDMETHOD_(int, GetCurSel(
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetDroppedControlRect(
		__inout RECT* lprc
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetDroppedState(
		)) PURE;

	__checkReturn STDMETHOD_(UINT, GetExtendedUI(
		)) PURE;

	__checkReturn STDMETHOD_(LRESULT, GetItemData(
		__in int nIndex
		)) PURE;

	__checkReturn STDMETHOD_(int, GetItemHeight(
		)) PURE;

	__checkReturn STDMETHOD_(int, GetLBText(
		__in int nIndex,
		__in LPCTSTR lpszBuffer
		)) PURE;

	__checkReturn STDMETHOD_(int, GetLBTextLen(
		__in int nIndex
		)) PURE;

	__checkReturn STDMETHOD_(int, GetMinVisible(
		)) PURE;

	__checkReturn STDMETHOD_(int, GetText(
		__in LPTSTR lpch,
		__in int cchMax
		)) PURE;

	__checkReturn STDMETHOD_(int, GetTextLength(
		)) PURE;

	__checkReturn STDMETHOD_(int, InsertItemData(
		__in int nIndex,
		__in LPARAM data
		)) PURE;

	__checkReturn STDMETHOD_(int, InsertString(
		__in int nIndex,
		__in LPCSTR lpsz
		)) PURE;

	__checkReturn STDMETHOD_(int, LimitText(
		__in int cchMax
		)) PURE;

	__checkReturn STDMETHOD_(int, ResetContent(
		)) PURE;

	__checkReturn STDMETHOD_(int, SelectItemData(
		__in int nIndexStart,
		__in LPARAM data
		)) PURE;

	__checkReturn STDMETHOD_(int, SelectString(
		__in int nIndexStart,
		__in LPCTSTR lpszFind
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetCueBannerText(
		__in LPCWSTR lpcwText
		)) PURE;

	__checkReturn STDMETHOD_(int, SetCurSel(
		__in int nIndex
		)) PURE;

	__checkReturn STDMETHOD_(int, SetExtendedUI(
		__in UINT nFlags
		)) PURE;

	__checkReturn STDMETHOD_(int, SetItemData(
		__in int nIndex,
		__in LPARAM data
		)) PURE;

	__checkReturn STDMETHOD_(int, SetItemHeight(
		__in int nIndex,
		__in int cyItem
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetMinVisible(
		__in  int nMinVisible
		)) PURE;

	__checkReturn STDMETHOD_(int, SetText(
		__in LPTSTR lpsz
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, ShowDropdown(
		__in BOOL bShow
		)) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd04") IMSK1RichTextBoxCtrl : 
	public virtual IMSK1Window
{
	__checkReturn STDMETHOD_(BOOL, CanPaste(
		__in UINT nFormat = 0
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, CanRedo(
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, CanUndo(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, CharFromPosition(
		__in POINT pt
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, Clear(
		)) PURE;

	__checkReturn STDMETHOD_(void, Copy(
		)) PURE;

	__checkReturn STDMETHOD_(void, Cut(
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, DisplayBand(
		__in LPRECT pDisplayRect
		)) PURE;

	__checkReturn STDMETHOD_(void, EmptyUndoBuffer(
		)) PURE;

	__checkReturn STDMETHOD_(long, FindText(
		__in DWORD dwFlags,
		__in FINDTEXTEX* pFindText
		)) CONST PURE;

	__checkReturn STDMETHOD_(DWORD, FindWordBreak(
		__in UINT nCode,
		__in DWORD nStart 
		)) CONST PURE;

	__checkReturn STDMETHOD_(long, FormatRange(
		__in FORMATRANGE* pFormatRange,
		__in BOOL bDisplay = TRUE 
		)) PURE;

	__checkReturn STDMETHOD_(POINT, GetCharacterPosition(
		__in LONG lCharacterIndex
		)) CONST PURE;

	__checkReturn STDMETHOD_(DWORD, GetDefaultCharacterFormat(
		__in CHARFORMAT& cf
		)) CONST PURE;

	__checkReturn STDMETHOD_(DWORD, GetDefaultCharacterFormat(
		__in CHARFORMAT2& cf
		)) CONST PURE;
	
	__checkReturn STDMETHOD_(long, GetEventMask(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetFirstVisibleLine(
		)) CONST PURE;

	//__checkReturn STDMETHOD_(IRichEditOle*, GetRichEditOle(
		//)) CONST PURE;

	__checkReturn STDMETHOD_(long, GetLimitText(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetLine(
		__in int nIndex,
		__in LPTSTR lpszBuffer,
		__in int nMaxLength = -1
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetLineCount(
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, GetModify(
		)) CONST PURE;

	__checkReturn STDMETHOD_(UINT, GetOptions(
		)) CONST PURE;

	__checkReturn STDMETHOD_(DWORD, GetParagraphFormat(
		__inout PARAFORMAT& pf
		)) CONST PURE;

	__checkReturn STDMETHOD_(BOOL, GetPunctuation(
		__in UINT fType,
		__inout PUNCTUATION* lpPunctuation
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, GetRect(
		__in LPRECT lpRect
		)) CONST PURE;

	/*__checkReturn STDMETHOD_(UNDONAMEID, GetRedoName(
		)) CONST PURE;*/
	
	__checkReturn STDMETHOD_(void, GetSelection(
		__inout CHARRANGE& cr
		)) CONST PURE;

	__checkReturn STDMETHOD_(void, GetSelection(
		__inout long& nStartChar, 
		__inout long& nEndChar  
		)) CONST PURE;

	__checkReturn STDMETHOD_(DWORD, GetSelectionCharacterFormat(
		__inout  CHARFORMAT& cf
		)) CONST PURE;

	__checkReturn STDMETHOD_(MSK1_SELECTION_TYPE, GetSelectionType(
		)) CONST PURE;

	__checkReturn STDMETHOD_(long, GetSelectedText(
		__inout LPSTR lpBuf
		)) CONST PURE;

	__checkReturn STDMETHOD_(long, GetTextLength(
		)) CONST PURE;

	__checkReturn STDMETHOD_(long, GetTextLengthEx(
		__in MSK1_RICHEDIT_TEXTLENGTH TextLengthFlags,
		__in UINT uCodePage = -1
		)) CONST PURE;

	__checkReturn STDMETHOD_(UINT, GetTextMode(
		)) CONST PURE;

	__checkReturn STDMETHOD_(int, GetTextRange(
		 int nFirst, 
		 int nLast,
		 LPCWSTR& lpzString
		)) CONST PURE;


};



MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd05") IMSK1TabViewCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd06") IMSK1TreeViewCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd07") IMSK1PropertySheetDialog : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd08") IMSK1TaskDialog : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd09") IMSK1DateTimePickerCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd10") IMSK1HeaderCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd10") IMSK1AnimationCtrl : 
	public virtual IMSK1Window
{
	__checkReturn STDMETHOD_(BOOL, Close(
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, IsPlaying(
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, Open(
		__in LPTSTR lpszName
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, Play(
		__in UINT wFrom,
		__in UINT wTo,
		__in UINT cRepeat
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, Seek(
		__in UINT wFrame
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, Stop(
		)) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd11") IMSK1UpDownCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd12") IMSK1ButtonCtrl : 
	public virtual IMSK1Window
{
	__checkReturn STDMETHOD_(BOOL, Enable(
		__in BOOL bEnable
		)) PURE;

	__checkReturn STDMETHOD_(LRESULT, GetCheck(
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetIdealSize(
		__in MSK1_SIZE_U size
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetImageList(
		__inout PBUTTON_IMAGELIST pImageList
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetNote(
		__in LPCWSTR psz,
		__in int lengthOfNote
		)) PURE;

	__checkReturn STDMETHOD_(WCHAR, GetNoteLength(
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetSplitInfo(
		__inout BUTTON_SPLITINFO *pInfo
		)) PURE;

	__checkReturn STDMETHOD_(LRESULT, GetState(
		)) PURE;

	__checkReturn STDMETHOD_(int, GetText(
		__in LPTSTR lpch,
		__in int cchMax
		)) PURE;

	__checkReturn STDMETHOD_(int, GetTextLength(
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, GetTextMargin(
		__in MSK1_MARGIN_U margin
		)) PURE;

	__checkReturn STDMETHOD_(LRESULT, SetCheck(
		__in MSK1_BUTTON_STATE btnCheckState
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetDropDownState(
		__in BOOL bDropDown
		)) PURE;

	__checkReturn STDMETHOD_(LRESULT, SetElevationRequiredState(
		__in BOOL bRequired
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetImageList(
		__in  PBUTTON_IMAGELIST pImageList
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetNote(
		__in PCWSTR psz
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetSplitInfo(
		__in BUTTON_SPLITINFO *pInfo
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetState(
		__in BOOL state
		)) PURE;

	__checkReturn STDMETHOD_(int, SetText(
		__in LPTSTR lpsz
		)) PURE;

	__checkReturn STDMETHOD_(LRESULT, SetStyle(
		__in MSK1_BUTTON_STATE btnStyle,
		__in BOOL bRedraw
		)) PURE;

	__checkReturn STDMETHOD_(BOOL, SetTextMargin(
		__in MSK1_MARGIN_U margin
		)) PURE;
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd12") IMSK1MonthCalendarCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd13") IMSK1ToolTipCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd14") IMSK1HotKeyCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd15") IMSK1ImageListCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd16") IMSK1PagerCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd17") IMSK1StaticCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd18") IMSK1SysLinkCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd18") IMSK1TrackBarCtrl : 
	public virtual IMSK1Window
{
};

MSK_DECLARE_INTERFACE("d7eaa557-f4a0-41e1-ad0a-58b10e58fd19") IMSK1ToolWindow : 
	public virtual IMSK1Window
{
};

#ifdef __cplusplus
extern "C"
{
#endif

	__declspec(dllexport) HRESULT WINAPI MSK1Create(
		__inout IMSK1Framework** pFramework
		);

#ifdef __cplusplus
}
#endif

#ifdef MSK1_USE_C_DEFINITIONS
#endif

DEFINE_GUID(IID_IMSK1Framework,			0xd7eaa557,0xf4a0,0x41e1,0xad,0x0a,0x58,0xb1,0x0e,0x58,0xfc,0xf0);
DEFINE_GUID(IID_IMSK1Application,		0xd7eaa557,0xf4a0,0x41e1,0xad,0x0a,0x58,0xb1,0x0e,0x58,0xfc,0xf1);
DEFINE_GUID(IID_IMSK1CommandHandler,	0xd7eaa557,0xf4a0,0x41e1,0xad,0x0a,0x58,0xb1,0x0e,0x58,0xfc,0xf2);
DEFINE_GUID(IID_IMSK1Window,			0xd7eaa557,0xf4a0,0x41e1,0xad,0x0a,0x58,0xb1,0x0e,0x58,0xfc,0xf3);
DEFINE_GUID(IID_IMSK1ToolWindow,		0xd7eaa557,0xf4a0,0x41e1,0xad,0x0a,0x58,0xb1,0x0e,0x58,0xfc,0xf4);
DEFINE_GUID(IID_IMSK1MenuBarControl,	0xd7eaa557,0xf4a0,0x41e1,0xad,0x0a,0x58,0xb1,0x0e,0x58,0xfc,0xf5);

namespace MSK1 {
	FORCEINLINE 
		MSK1_SIZE_U SizeU(
		UINT32 width, 
		UINT32 height
		) 
	{
		MSK1_SIZE_U size = {width, height};
		return size;
	}

	FORCEINLINE 
		MSK1_POINT_U PointU(
		UINT32 x,
		UINT32 y
		) 
	{
		MSK1_POINT_U pt = {x, y};
		return pt;
	}

	FORCEINLINE 
		MSK1_MARGIN_U MarginU(
		UINT32 left, 
		UINT32 top, 
		UINT32 right, 
		UINT32 bottom
		)
	{
		MSK1_MARGIN_U margin = {left, top, right, bottom};
		return margin;
	}
}

#endif // #ifndef _MSK1_H_